package yhp.com.zijie.service.impl;

import yhp.com.zijie.bean.Menu;
import yhp.com.zijie.bean.Role;
import yhp.com.zijie.bean.Users;
import yhp.com.zijie.dao.RoleDao;
import yhp.com.zijie.dao.UsersDao;
import yhp.com.zijie.dao.impl.RoleDaoImpl;
import yhp.com.zijie.dao.impl.UsersDaoImpl;
import yhp.com.zijie.service.UsersService;

import java.util.ArrayList;
import java.util.List;

public class UsersServiceImpl implements UsersService {

    private UsersDao usersDao = new UsersDaoImpl();
    private RoleDao roleDao = new RoleDaoImpl();

    @Override
    public Users login(String username, String password) {

        Users users = usersDao.login(username, password);

        //上面调用方法之后，确定可以登录后，还需要对用户的权限做出判断-需要执行后面的方法来得到用户的权限
        if (users == null){
            return null;
        }

        //需要知道用户的权限，所以就必须有用户的角色id
        Integer roleId = users.getRoleId();//根据登录查询出的数据，取出该用户的角色id
        //根据角色id，去调用方法
        Role role = roleDao.findById(roleId);
        //菜单分类-分级
        List<Menu> menuList = role.getMenuList();
        List<Menu> newMenuList = new ArrayList<>();
        for (Menu menu : menuList) {
            if (menu.getUpMenuId()==0){//说明是一级菜单，

                ArrayList<Menu> secondList = new ArrayList<>();//一级菜单下有多个二级菜单
                for (Menu second : menuList) { //再次遍历，找出二级菜单
                    if (second.getUpMenuId()==menu.getMenuId()){ //二级菜单的id==一级菜单的id说明该二级菜单是一级菜单的子
                        secondList.add(second);//将找出的二级菜单添加到二级菜单的集合中
                    }
                }

                menu.setSecondMenuList(secondList);//给menu类中的二级菜单赋值
                newMenuList.add(menu);//创建了一个集合保存了一级菜单（一级菜单中包含了二级菜单）
            }
        }
        role.setMenuList(newMenuList);//角色包含整个菜单

        users.setRole(role);//用户对应角色

        return users;
    }

    @Override
    public List<Users> getUsersList(int pageIndex, int pageSize) {
        return usersDao.getUsersList(pageIndex,pageSize);
    }

    @Override
    public int total() {
        return usersDao.total();
    }
}
